Prepinani RTS
Otázka od: Jan Harman
26. 8. 2004 13:51
Zdravim,
mam problem s prepinanim RTS. Vyslu blok dat a RTS signal se prepne az za
asi 10-15ms. Cas neni vzdy stejny, dokonce se to jednou za cca 30 vyslani
prepne i spravne, hned za vyslanim posleniho znaku. Nesetkal jste se nekdo s
timto problemem prosim? Zkousim uz i ruzne komponenty pro komunikaci pres
Com, zacal jsem s AsyncFree...pres jednoduche "OpenFile..." a skoncil jsem u
AsyncProfessional. Trapim se s tim uz dva dny a NIC.
Mnohokrat dekuji za kazdou pomoc.
Honza
Odpovedá: Slavomir Skopalik
26. 8. 2004 15:01
Jak signal RTS ovladas ? Je to klasicky handshake, nebo ho nastavujes
rucne ?
Nemas to nahodou pro rizeni smeru prenosu RS485 linky ?
Slavek
> Zdravim,
> mam problem s prepinanim RTS. Vyslu blok dat a RTS signal se
> prepne az za asi 10-15ms. Cas neni vzdy stejny, dokonce se to
> jednou za cca 30 vyslani prepne i spravne, hned za vyslanim
> posleniho znaku. Nesetkal jste se nekdo s timto problemem
> prosim? Zkousim uz i ruzne komponenty pro komunikaci pres
> Com, zacal jsem s AsyncFree...pres jednoduche "OpenFile..." a
> skoncil jsem u AsyncProfessional. Trapim se s tim uz dva dny
> a NIC. Mnohokrat dekuji za kazdou pomoc.
>
> Honza
>
>
>
>
>
>
Odpovedá: Lukas Gebauer
26. 8. 2004 15:05
> mam problem s prepinanim RTS. Vyslu blok dat a RTS signal se prepne az
> za asi 10-15ms. Cas neni vzdy stejny, dokonce se to jednou za cca 30
> vyslani prepne i spravne, hned za vyslanim posleniho znaku. Nesetkal
> jste se nekdo s timto problemem prosim? Zkousim uz i ruzne komponenty
> pro komunikaci pres Com, zacal jsem s AsyncFree...pres jednoduche
> "OpenFile..." a skoncil jsem u AsyncProfessional. Trapim se s tim uz
> dva dny a NIC. Mnohokrat dekuji za kazdou pomoc.
Jakym zpusobem to RTS prepinas? jde ti o normalni RTS handshake, nebo
tim RTS signalem ridis nejaky prevodnik?
--
Lukas Gebauer.
E-mail: gebauerl@mlp.cz
http://www.ararat.cz/synapse/ - Ararat Synapse - TCP/IP Lib.
Odpovedá: Jan Harman
26. 8. 2004 15:11
Normalne v DCB strukture to je RTS_CONTROL_TOGGLE. Ale komponenta z
AsyncProf ma specialni mod RS485Mode, tak pouzivam tento.
Potrebuji to pro prepinani smeru RS485 linky.
> Jak signal RTS ovladas ? Je to klasicky handshake, nebo ho nastavujes
> rucne ?
> Nemas to nahodou pro rizeni smeru prenosu RS485 linky ?
>
> Slavek
>
>
> > Zdravim,
> > mam problem s prepinanim RTS. Vyslu blok dat a RTS signal se
> > prepne az za asi 10-15ms. Cas neni vzdy stejny, dokonce se to
> > jednou za cca 30 vyslani prepne i spravne, hned za vyslanim
> > posleniho znaku. Nesetkal jste se nekdo s timto problemem
> > prosim? Zkousim uz i ruzne komponenty pro komunikaci pres
> > Com, zacal jsem s AsyncFree...pres jednoduche "OpenFile..." a
> > skoncil jsem u AsyncProfessional. Trapim se s tim uz dva dny
> > a NIC. Mnohokrat dekuji za kazdou pomoc.
> >
> > Honza
> >
> >
> >
> >
> >
> >
>
>
>
>
Odpovedá: Jan Harman
26. 8. 2004 15:39
> > mam problem s prepinanim RTS. Vyslu blok dat a RTS signal se prepne az
> > za asi 10-15ms. Cas neni vzdy stejny, dokonce se to jednou za cca 30
> > vyslani prepne i spravne, hned za vyslanim posleniho znaku. Nesetkal
> > jste se nekdo s timto problemem prosim? Zkousim uz i ruzne komponenty
> > pro komunikaci pres Com, zacal jsem s AsyncFree...pres jednoduche
> > "OpenFile..." a skoncil jsem u AsyncProfessional. Trapim se s tim uz
> > dva dny a NIC. Mnohokrat dekuji za kazdou pomoc.
>
> Jakym zpusobem to RTS prepinas? jde ti o normalni RTS handshake, nebo
> tim RTS signalem ridis nejaky prevodnik?
RTS signalem potrebuji ridit smer u prevodniku. Ten RTS signal chodi, ale ma
dost velke variabilni zpozdeni. Zkousel jsem na dalsich 3 pocitacich, se
stejnym vysledkem.
Odpovedá: Slavomir Skopalik
26. 8. 2004 16:20
Tohle se uz tady nekolikrat resilo, nikdy s uspokojivym vysledkem.
Softwarove to slusne vyresit nejde, prohledejte konferenci, hledejte
RS485.
Ja bych to resil hadwarove (automaticky prevodnik), nebo karta.
Windows sice maji zpravu, ze je vystupni fronta prazdna, ale
ta nechodi jak by clovek cekal, tahle udalost prijde, kdyz je jeste
posledni znak ve vystupnim bufferu (psal to tusim nekdo od Papoucha).
Dalsim problemem je casovani ve windows, Vam pak hrozi, za ztratite
zacatek
odpovedi.
Ve windows NELZE cekat presne, lze jen cekat nejmene
nepriklad sleep(10) pozka nejmene 10 ms, ale klidne i 3x tolik
(pokud byl kod odsttranen z pameti a musi se natahnout z disku).
Pokud budete pouzivat nejakou komponentu, doporucuji velmi dukladne
zkontrolovat jeji kod.
Pokud tento program chcete pustit mezi lidi, tak se pripravte na hromadu
problemu, nektere COM porty reaguji uplne jinak (napriklad USB, nebo
Eth, kde jsou velka dopravni zpozdeni).
Slavek
> Normalne v DCB strukture to je RTS_CONTROL_TOGGLE. Ale
> komponenta z AsyncProf ma specialni mod RS485Mode, tak
> pouzivam tento. Potrebuji to pro prepinani smeru RS485 linky.
>
Odpovedá: Jan Harman
26. 8. 2004 16:17
Obdoba je i kdyz pouziju synaser.
ser.RTS := true;
ser.SendBuffer(@AData, ACnt);
ser.RTS := false;
nicmene, signal RTS spadne az za 5-15ms po odvysilani posledniho znaku. V te
dobe uz druha strana davno zacala odpovidat, takze nechytnu zacatek.
Myslel jsem ze je to hardwareova zalezitost komunikacniho driveru. Hmm asi
ne
Honza
Odpovedá: Jan Masek
26. 8. 2004 17:19
> Tohle se uz tady nekolikrat resilo, nikdy s uspokojivym vysledkem.
> Softwarove to slusne vyresit nejde, prohledejte konferenci, hledejte
> RS485.
> Ja bych to resil hadwarove (automaticky prevodnik), nebo karta.
>
>Windows sice maji zpravu, ze je vystupni fronta prazdna, ale
>ta nechodi jak by clovek cekal, tahle udalost prijde, kdyz je jeste
>posledni znak ve vystupnim bufferu (psal to tusim nekdo od Papoucha).
To neni az tak uplne pravda. Softwarove to samozrejmne resil lze za
predpokladu,
ze mate pristup na registry UARTu. Tam je mozne ziskat informaci o odeslani
posledniho
znaku. Tedy nespolehat na blbe napsane drivery woken, ale na rovnou na HW.
Osobne to mam otestovane na W98/ME do rychlosti 115k. Na NT/2000/XP lze
toto pouzit pouze za predpokladu, ze zabezpecite pristup na registry, coz se
necha
nekterymi obecnymi IO drivery, nebo vlastnim driverem.
J.Masek
Odpovedá: Lukas Gebauer
26. 8. 2004 17:12
> Obdoba je i kdyz pouziju synaser.
> ser.RTS := true;
> ser.SendBuffer(@AData, ACnt);
> ser.RTS := false;
I kdybys to nedelal rucne, ale zapnul si misto toho EnableRTSToggle u
Synaseru, problem bude trvat i nadal. Je to proste problem windows
driveru. Ten problem se opravdu zadnou knihovnou rozumne vyresit
neda. Proto mas stejny problem se vsim, co jsi zkusil.
V pripade Synaseru a pouziti metody EnableRTSToggle, to bude fungovat
vyrazne lepe, kdyz to pobezi na W9x.
Nejlepsi reseni je ale pouzit takovy prevodnik, ktery nepotrebuje
zadne explicitni prepinani, protoze se prepina zcela sam automaticky.
Takove prevodniky existuji!
--
Lukas Gebauer.
E-mail: gebauerl@mlp.cz
http://www.ararat.cz/synapse/ - Ararat Synapse - TCP/IP Lib.
Odpovedá: Slavomir Skopalik
26. 8. 2004 19:22
> To neni az tak uplne pravda. Softwarove to samozrejmne resil
> lze za predpokladu, ze mate pristup na registry UARTu. Tam je
> mozne ziskat informaci o odeslani posledniho znaku. Tedy
> nespolehat na blbe napsane drivery woken, ale na rovnou na
> HW. Osobne to mam otestovane na W98/ME do rychlosti 115k. Na
Tohle plati POUZE na standartnich COMech, pokud pouzijete
USB, Eth, .. tak to stejne nebude fungovat.
Pokud se ovsem bavime o klasickych comech (u nb mam jen USB)
tak mate pravdu.
> NT/2000/XP lze toto pouzit pouze za predpokladu, ze
> zabezpecite pristup na registry, coz se necha nekterymi
> obecnymi IO drivery, nebo vlastnim driverem.
Jedine driveverem. V user space si neskrtnete, to bude fungovat
pouze v kanclu. Pridelovani casu na NT je po 10ms na process !
Priorita jen rika jak casto, nikol kolik (server ma toto kvantum jeste
delsi).
Slavek
Odpovedá: Jan Masek
27. 8. 2004 10:00
> > To neni az tak uplne pravda. Softwarove to samozrejmne resil
> > lze za predpokladu, ze mate pristup na registry UARTu. Tam je
> > mozne ziskat informaci o odeslani posledniho znaku. Tedy
> > nespolehat na blbe napsane drivery woken, ale na rovnou na
> > HW. Osobne to mam otestovane na W98/ME do rychlosti 115k. Na
>
> Tohle plati POUZE na standartnich COMech, pokud pouzijete
> USB, Eth, .. tak to stejne nebude fungovat.
>
> Pokud se ovsem bavime o klasickych comech (u nb mam jen USB)
> tak mate pravdu.
>
Prominte mi mou pomalost v chapani informacni hodnoty Vaseho prispevku.
Zcela srozumitelne jsem napsal:
"za predpokladu, ze mate pristup na registry UARTu".
Tim je snad naprosto jasne a jednoznacne receno, ze to nelze pouzit s
virtualnimi nahrazkami.
Co se tyce USB->COM prevodniku - vetsina z nich ma rezim, kdy dokazi
automaticky
prepnout smer prenosu. Jenze to chce znat neco o USB, HW a vlastni implementaci
USB->COM
prevodniku a nespolehat jen na "pseudo" kompatibilitu se standardnimi COM porty
A virtualni COM porty pres TCP/IP je jiz kapitola sama pro sebe
J.Masek
Odpovedá: Slavomir Skopalik
27. 8. 2004 10:14
A virtualni COM porty pres TCP/IP
> je jiz kapitola sama pro sebe
Jo, ty jsou moje oblibene
Pozivam moxa DE211, funguje zde jak RS232, tak RS485 bez problemu.
U tohoto prevodniku je dost velky problem s prikazem purgecom, trva
hodne dlouho (stovky ms).
Pripadne si ted hraju s MOXA NE4000T, ten ma zase zpozdeni
200 ms pri odesilani prijatych byte (seskupovani byte do paketu
na Eth).
Slavek